package chasqui.servlets;

import conn.bean.BAbonado;
import conn.bean.BCampana;
import conn.bean.BDireccion;
import conn.bean.BEestadollamada;
import conn.bean.BEmpleado;
import conn.bean.BEstadocampana;
import conn.bean.BLinea;
import conn.bean.BMensaje;
import conn.dao.DAbonado;
import conn.dao.DCampana;
import conn.dao.DDepartamento;
import conn.dao.DDireccion;
import conn.dao.DDistrito;
import conn.dao.DEmpleado;
import conn.dao.DLinea;
import conn.dao.DMensaje;
import conn.dao.DProvincia;
import conn.dao.DTipoLinea;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import net.sf.sojo.interchange.json.JsonSerializer;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.tomcat.util.http.fileupload.DefaultFileItemFactory;

public class CampanaServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");
        String jspPage = "/index.jsp";

        if ((action == null) || (action.length() < 1)) {
            action = "default";
        }

        if ("default".equals(action)) {

            String usuario = "";
            HttpSession sesionOk = request.getSession();
            if (sesionOk.getAttribute("usuario") == null) {
                String mensaje="Debe iniciar sesion!!!.";
                request.setAttribute("mensajeError", mensaje);
                jspPage="/usuario.jsp";}
            else {
                usuario = (String)sesionOk.getAttribute("usuario");
                request.setAttribute("usuario", usuario);
                 

            DCampana dcampana = new DCampana();
            List campanas = dcampana.getmodcampanas();
            request.setAttribute("campanas", campanas);
            jspPage = "/campana.jsp";}

        }
        else if ("listaCampanas".equals(action)) {

            String[] ATRIBUTOS_JSON_EXCLUIDOS = new String[]{
            "~unique-id~", "class"
            };
            int start=Integer.valueOf(request.getParameter("start")).intValue();
            int limit=Integer.valueOf(request.getParameter("limit")).intValue();

            DCampana dcampana=new DCampana();
            
            
            String filterid_campaña = "";
            String filtername = request.getParameter("filtername");
            String filterprioridad = request.getParameter("filterprioridad");
            String filtermensaje = request.getParameter("filtermensaje");
            String filterfechainicio = request.getParameter("filterfechainicio");
            String filterfechafin = request.getParameter("filterfechafin");
            String filterempleado = request.getParameter("filterempleado");
            String filternumlineasm = request.getParameter("filternumlineasm");
            String filternumlineasM = request.getParameter("filternumlineasM");
            
            if(filterid_campaña.isEmpty()){filterid_campaña="%";}
            if(filtername.isEmpty()){filtername="%";}
            if(filterprioridad.isEmpty()){filterprioridad="%";}
            if(filtermensaje.isEmpty()){filtermensaje="%";}
            if(filterfechainicio.isEmpty()){filterfechainicio="%";}
            if(filterfechafin.isEmpty()){filterfechafin="%";}
            if(filterempleado.isEmpty()){filterempleado="%";}
            if(filternumlineasm.isEmpty()){filternumlineasm="0";}
            if(filternumlineasM.isEmpty()){filternumlineasM="1000";}

            List<BCampana> campanas = (List<BCampana>)dcampana.getFilteredCampana(filterid_campaña,filtername,filterfechainicio,filterfechafin, filterempleado,
                                                                  filternumlineasm,filternumlineasM,filterprioridad,filtermensaje);

            String listaJSON = null;
            if (campanas == null) {
                campanas = new ArrayList<BCampana>(0);
            }
            int end=start+limit;
            if (end>=campanas.size()){
                end=campanas.size();
            }
            if (start>=campanas.size()){
                start=campanas.size();
                end=start;
            }

            listaJSON = new String(new JsonSerializer().serialize(campanas.subList(start,end), ATRIBUTOS_JSON_EXCLUIDOS).toString());
            request.setAttribute("listaJSON", listaJSON);
            request.setAttribute("totalCount", campanas.size());
            jspPage = "/rptaJson.jsp";
        }
        else if ("listaGrillaLineas".equals(action)) {

            String[] ATRIBUTOS_JSON_EXCLUIDOS = new String[]{
            "~unique-id~", "class"
            };
            int start=Integer.valueOf(request.getParameter("start")).intValue();
            int limit=Integer.valueOf(request.getParameter("limit")).intValue();
            String id=request.getParameter("idCampana");
            DLinea lineaManager = new DLinea();
            List lineas = new ArrayList();
            List lineasAnteriores = new ArrayList();
            lineas = lineaManager.getmodlineas();
            if (id != null && !id.equals("")) {
                lineasAnteriores = lineaManager.getLineasxCampana(Integer.valueOf(id).intValue());
            }
            for (int i = 0; i < lineas.size(); i++) {
                boolean antigua = false;
                for (int j = 0; j < lineasAnteriores.size(); j++) {
                    if (((BLinea) lineasAnteriores.get(j)).getIdLinea() == ((BLinea) lineas.get(i)).getIdLinea()) {
                        antigua = true;
                    }
                }
                ((BLinea) lineas.get(i)).setAntigua(antigua);
            }
            String listaJSON = null;
            if (lineas == null) {
                lineas = new ArrayList<BCampana>(0);
            }
            int end=start+limit;
            if (end>=lineas.size()){
                end=lineas.size();
            }
            if (start>=lineas.size()){
                start=lineas.size();
                end=start;
            }

            listaJSON = new String(new JsonSerializer().serialize(lineas.subList(start,end), ATRIBUTOS_JSON_EXCLUIDOS).toString());
            request.setAttribute("listaJSON", listaJSON);
            request.setAttribute("totalCount", lineas.size());
            jspPage = "/rptaJson.jsp";
        }
        else if ("borrarCampana".equals(action)) {


            String idcampana = request.getParameter("idCampana");
            DCampana dcampana = new DCampana();
            dcampana.borrarCampana(Integer.valueOf(idcampana).intValue());

            List campanas = dcampana.getmodcampanas();
            request.setAttribute("campanas", campanas);

            jspPage = "/campana.jsp";
        }
            else if ("filtercampana".equals(action)){
            
                DCampana manager = new DCampana();

                String filterid_campaña = request.getParameter("filterid_campaña");
                String filtername = request.getParameter("filtername");
                String filterprioridad = request.getParameter("filterprioridad");
                String filtermensaje = request.getParameter("filtermensaje");
                String filterfechainicio = request.getParameter("filterfechainicio");
                String filterfechafin = request.getParameter("filterfechafin");
                String filterempleado = request.getParameter("filterempleado");
                String filternumlineasm = request.getParameter("filternumlineasm");
                String filternumlineasM = request.getParameter("filternumlineasM");

                if(filterid_campaña.isEmpty()){filterid_campaña="%";}
                if(filtername.isEmpty()){filtername="%";}
                if(filterprioridad.isEmpty()){filterprioridad="%";}
                if(filtermensaje.isEmpty()){filtermensaje="%";}
                if(filterfechainicio.isEmpty()){filterfechainicio="%";}
                if(filterfechafin.isEmpty()){filterfechafin="%";}
                if(filterempleado.isEmpty()){filterempleado="%";}
                if(filternumlineasm.isEmpty()){filternumlineasm="0";}
                if(filternumlineasM.isEmpty()){filternumlineasM="1000";}
                
                List campanafiltrada = manager.getFilteredCampana(filterid_campaña,filtername,filterfechainicio,filterfechafin, filterempleado,
                                                                  filternumlineasm,filternumlineasM,filterprioridad,filtermensaje);

                request.setAttribute("campanas", campanafiltrada);
                /*if (filtername.isEmpty()){
                List acampanas = manager.getmodcampanas();
                request.setAttribute("campanas", acampanas);
            }

            else{
                //List bcampanas = manager.getFilteredCampana(filtername);
            //    request.setAttribute("campanas", bcampanas);
            }*/
            jspPage = "/campana.jsp";


        } else if ("crearCampana".equals(action)) {
            DEmpleado dempleado = new DEmpleado();
            List empleados = dempleado.getEmpleados();
            request.setAttribute("empleados", empleados);
            DMensaje dmensaje = new DMensaje();
            List mensajes = dmensaje.getMensajes();
            request.setAttribute("mensajes", mensajes);
            jspPage = "/crear_campana.jsp";

         } else if ("modificarCampana".equals(action)) {
            String idCampana = request.getParameter("idCampana");
            DCampana dcampana = new DCampana();
            BCampana campana = dcampana.getCampana(Integer.valueOf(idCampana).intValue());
            request.setAttribute("campana", campana);
            String fechaI[] = campana.getFechainit().split("-");
            request.setAttribute("ano1", Integer.valueOf(fechaI[0]).intValue());
            request.setAttribute("mes1", Integer.valueOf(fechaI[1]).intValue());
            request.setAttribute("dia1", Integer.valueOf(fechaI[2]).intValue());
            String fechaF[] = campana.getFechafin().split("-");
            request.setAttribute("ano2", Integer.valueOf(fechaF[0]).intValue());
            request.setAttribute("mes2", Integer.valueOf(fechaF[1]).intValue());
            request.setAttribute("dia2", Integer.valueOf(fechaF[2]).intValue());

            DEmpleado dempleado = new DEmpleado();
            List empleados = dempleado.getEmpleados();
            request.setAttribute("empleados", empleados);
            DMensaje dmensaje = new DMensaje();
            List mensajes = dmensaje.getMensajes();
            request.setAttribute("mensajes", mensajes);

            jspPage = "/crear_campana.jsp";

        } /* METODO DE CREACION DE CAMPANAS XD!
        else if ("crearCampana_exe".equals(action))
        {
        DCampana dcampana=new DCampana();
        String nombre=request.getParameter("nombre");
        int idMensaje=Integer.valueOf(request.getParameter("mensaje")).intValue();
        int idEmpleado=Integer.valueOf(request.getParameter("empleado")).intValue();
        DEmpleado dempleado=new DEmpleado();
        BEmpleado bempleado=dempleado.getEmpleado(idEmpleado);
        BMensaje bmensaje=new BMensaje();
        bmensaje.setIdMensaje(idMensaje);
        String dia1=request.getParameter("dia1");
        String mes1=request.getParameter("mes1");
        String ano1=request.getParameter("ano1");
        String dia2=request.getParameter("dia2");
        String mes2=request.getParameter("mes2");
        String ano2=request.getParameter("ano2");
        String fecha1=ano1+"-"+mes1+"-"+dia1;
        String fecha2=ano2+"-"+mes2+"-"+dia2;
        BEstadocampana bestado=new BEstadocampana();
        bestado.setIdEstadocampana(1);

        BCampana campana=new BCampana(0, nombre, fecha1, fecha2, bempleado, bmensaje, "Alta", "Descripcion",bestado );
        dcampana.crearCampana(campana);
        String fechaprueba="2010-01-02";
        String estado="Activo";
        int idcampana=dcampana.getUltimoId();
        dcampana.asociarLineaCampana(idcampana, 1, estado , fechaprueba);
        List campanas=dcampana.getmodcampanas();
        request.setAttribute("campanas", campanas);
        jspPage = "/campana.jsp";
        }
         */ else if ("guardarCampanaConLineas".equals(action)) {
            DCampana dcampana = new DCampana();
            String nombre = request.getParameter("nombre");
            int idMensaje = Integer.valueOf(request.getParameter("mensaje")).intValue();
            String prioridad = request.getParameter("prioridad");
            int idEmpleado = Integer.valueOf(request.getParameter("empleado")).intValue();
            DEmpleado dempleado = new DEmpleado();
            BEmpleado bempleado = dempleado.getEmpleado(idEmpleado);
            BMensaje bmensaje = new BMensaje();
            bmensaje.setIdMensaje(idMensaje);
            String fecha1 = request.getParameter("fecha1");
            String fecha2 = request.getParameter("fecha2");
            BEstadocampana bestado = new BEstadocampana();
            bestado.setIdEstadocampana(1);

            String idCampana = request.getParameter("idCampana");
            String lineasString = request.getParameter("lineas");
            String[] lineas=null;
            if (lineasString!=null) lineas=lineasString.split(",");
            if (lineas==null) lineas=new String[0];
            //SI ES REGISTRAR
            if (idCampana == null || idCampana.equals("")) {

                BCampana campana = new BCampana(0, nombre, fecha1, fecha2, bempleado, bmensaje, prioridad, "Descripcion", bestado);
                dcampana.crearCampana(campana);
                String fechaprueba = "2010-01-02";
                String estado = "Activo";
                int idcampana = dcampana.getUltimoId();

                for (int i = 0; i < lineas.length; i++) {
                    dcampana.asociarLineaCampana(idcampana, Integer.valueOf(lineas[i]).intValue(), estado, fechaprueba);
                }
            } //SI ES MODIFICAR
            else {

                BCampana bcampana = new BCampana(Integer.valueOf(idCampana).intValue(), nombre, fecha1, fecha2, bempleado, bmensaje, prioridad, "Descripcion", bestado);
                dcampana.actualizarCampana(bcampana);

                DLinea dlinea = new DLinea();
                List lineasAnteriores = new ArrayList();
                lineasAnteriores = dlinea.getLineasxCampana(Integer.valueOf(idCampana).intValue());
                String[] nuevasLineas = new String[lineas.length];
                int indLinea = 0;
                //HAY QUE SACAR UNA LISTA DE CUALES ASOCIAR(LINEAS Q NO ESTABAN ANTES)
                for (int i = 0; i < lineas.length; i++) {
                    boolean nueva = true;
                    for (int j = 0; j < lineasAnteriores.size(); j++) {
                        if (((BLinea) lineasAnteriores.get(j)).getIdLinea() == Integer.valueOf(lineas[i]).intValue()) {
                            nueva = false;
                        }
                    }
                    if (nueva) {
                        nuevasLineas[indLinea++] = lineas[i];
                    }
                }
                for (int i = 0; i < indLinea; i++) {
                    String fechaprueba = "2010-01-02";
                    String estado = "Activo";
                    dcampana.asociarLineaCampana(Integer.valueOf(idCampana).intValue(), Integer.valueOf(nuevasLineas[i]).intValue(), estado, fechaprueba);
                }
                //FIN DE ASOCIAR

                //HAY QUE SACAR UNA LISTA DE CUALES ELIMINAR
                int[] lineasEliminadas = new int[lineasAnteriores.size()];
                int indEliminadas = 0;
                for (int i = 0; i < lineasAnteriores.size(); i++) {
                    boolean eliminada = true;
                    for (int j = 0; j < lineas.length; j++) {
                        if (((BLinea) lineasAnteriores.get(i)).getIdLinea() == Integer.valueOf(lineas[j]).intValue()) {
                            eliminada = false;
                        }
                    }
                    if (eliminada) {
                        lineasEliminadas[indEliminadas++] = ((BLinea) lineasAnteriores.get(i)).getIdLinea();
                    }
                }
                for (int k = 0; k < indEliminadas; k++) {
                    dcampana.eliminarLineaAsociada(idCampana, lineasEliminadas[k]);
                }

                //FIN DE ELIMINAR
            }

            List campanas = dcampana.getmodcampanas();
            request.setAttribute("campanas", campanas);
            jspPage = "/campana.jsp";
            
        } else if ("busqueda_lineas".equals(action)) {
            String id = request.getParameter("idCampana");
            String nombre = request.getParameter("nombre");
            int idMensaje = Integer.valueOf(request.getParameter("mensaje")).intValue();
            String prioridad = request.getParameter("prioridad");
            int idEmpleado = Integer.valueOf(request.getParameter("empleado")).intValue();
            String fecha1 = request.getParameter("fecha1");

            String fecha2 = request.getParameter("fecha2");

            request.setAttribute("idCampana", id);
            request.setAttribute("nombre", nombre);
            request.setAttribute("mensaje", idMensaje);
            request.setAttribute("prioridad", prioridad);
            request.setAttribute("empleado", idEmpleado);
            request.setAttribute("fecha1", fecha1);
            request.setAttribute("fecha2", fecha2);
            DLinea lineaManager = new DLinea();
            List lineas = null;
            List lineasAnteriores = new ArrayList();
            lineas = lineaManager.getmodlineas();
            if (id != null && !id.equals("")) {
                lineasAnteriores = lineaManager.getLineasxCampana(Integer.valueOf(id).intValue());
            }
            for (int i = 0; i < lineas.size(); i++) {
                boolean antigua = false;
                for (int j = 0; j < lineasAnteriores.size(); j++) {
                    if (((BLinea) lineasAnteriores.get(j)).getIdLinea() == ((BLinea) lineas.get(i)).getIdLinea()) {
                        antigua = true;
                    }
                }
                ((BLinea) lineas.get(i)).setAntigua(antigua);
            }

            DDepartamento ddepartamento = new DDepartamento();
            List departamentos = new ArrayList();
            departamentos = ddepartamento.getmoddepartamento();
            request.setAttribute("departamentos", departamentos);


            DProvincia dprovincia = new DProvincia();
            List provincias = new ArrayList();
            provincias = dprovincia.getmodprovincia();
            request.setAttribute("provincias", provincias);

            DDistrito ddistrito = new DDistrito();
            List distritos = new ArrayList();
            distritos = ddistrito.getmoddistrito();
            request.setAttribute("distritos", distritos);

            DTipoLinea dtipolinea = new DTipoLinea();
            List tipolineas = new ArrayList();
            tipolineas = dtipolinea.getmodtipolinea();
            request.setAttribute("tipolineas", tipolineas);

            request.setAttribute("lineas", lineas);
            jspPage = "/busqueda_personalizada_lineas.jsp";
        } else if ("busqueda_excel".equals(action)) {
            String id = request.getParameter("idCampana");
            String nombre = request.getParameter("nombre");
            int idMensaje = Integer.valueOf(request.getParameter("mensaje")).intValue();
            int idEmpleado = Integer.valueOf(request.getParameter("empleado")).intValue();
            String fecha1 = request.getParameter("fecha1");
            String fecha2 = request.getParameter("fecha2");

                        request.setAttribute("idCampana", id);
            request.setAttribute("nombre", nombre);
            request.setAttribute("mensaje", idMensaje);
            request.setAttribute("empleado", idEmpleado);
            request.setAttribute("fecha1", fecha1);
            request.setAttribute("fecha2", fecha2);

            jspPage = "/asociar_por_excel.jsp";
        } else if ("asociar_excel".equals(action)) {

            String idCampana="",nombre="",fecha1="",fecha2="";
            int idMensaje=-1,idEmpleado=-1;
            File uploadedFile=null;

            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            List items=new ArrayList();
            try {
                items = upload.parseRequest(request);
            } catch (FileUploadException ex) {
                Logger.getLogger(CampanaServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
            Iterator iter = items.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();

                if (item.isFormField()) {
                    String name = item.getFieldName();
                    if (name!=null && name.equals("idCampana")){
                        idCampana=item.getString();
                    }
                    if (name!=null && name.equals("nombre")){
                        nombre=item.getString();
                    }
                    if (name!=null && name.equals("fecha1")){
                        fecha1=item.getString();
                    }
                    if (name!=null && name.equals("fecha2")){
                        fecha2=item.getString();
                    }
                    if (name!=null && name.equals("empleado")){
                        idEmpleado=Integer.valueOf(item.getString()).intValue();
                    }
                    if (name!=null && name.equals("mensaje")){
                        idMensaje=Integer.valueOf(item.getString()).intValue();
                    }

                } else {
                    uploadedFile = new File("C:\\Archivos\\"+item.getName());
                    try {
                        item.write(uploadedFile);
                    } catch (Exception ex) {
                        Logger.getLogger(CampanaServlet.class.getName()).log(Level.SEVERE, null, ex);
                    }

                }
            }

            DEmpleado dempleado = new DEmpleado();
            BEmpleado bempleado = dempleado.getEmpleado(idEmpleado);
            BMensaje bmensaje = new BMensaje();
            bmensaje.setIdMensaje(idMensaje);
            BEstadocampana bestado = new BEstadocampana();
            bestado.setIdEstadocampana(1);
            //String archivo = request.getParameter("archivo");
            File inputWorkbook = uploadedFile;
            Workbook w;
            int listaLineas[]=new int[100];
            int indiceLineas=0;
            DLinea dlinea=new DLinea();
            try {
                w = Workbook.getWorkbook(inputWorkbook);
                // Get the first sheet
                Sheet sheet = w.getSheet(0);
                // Loop over first 10 column and lines

                for (int j = 0; j < sheet.getRows(); j++) {
                    /*Este es el nombre*/
                    Cell cell=sheet.getCell(0,j);
                    String nombreCliente=cell.getContents();
                    cell=sheet.getCell(1,j);
                    String apellidopCliente=cell.getContents();
                    cell=sheet.getCell(2,j);
                    String apellidomCliente=cell.getContents();
                    cell=sheet.getCell(3,j);
                    String sexoCliente=cell.getContents();
                    cell=sheet.getCell(4,j);
                    String estadoCivilCliente=cell.getContents();
                    cell=sheet.getCell(5,j);
                    String fechaNacCliente=cell.getContents();
                    cell=sheet.getCell(6,j);
                    String direccion=cell.getContents();
                    cell=sheet.getCell(7,j);
                    int distrito=Integer.valueOf(cell.getContents());
                    cell=sheet.getCell(8,j);
                    String numero=cell.getContents();


                    BAbonado abonado=new BAbonado(0, nombreCliente, apellidopCliente, apellidomCliente, sexoCliente, estadoCivilCliente, fechaNacCliente, null,null);
                    DAbonado abonadoManager=new DAbonado();
                    int idLinea=abonadoManager.existeLineaAbonado(abonado,numero);
                    if (idLinea==-1){

                        /*CREAR DIRECCION*/
                        DDireccion ddireccion=new DDireccion();
                        ddireccion.crearDireccion(direccion, distrito);
                        int idDireccion=ddireccion.getUltimoId();
                        /*CREAR ABONADO*/
                        abonado.setDireccion(new BDireccion(idDireccion, null, null));
                        abonadoManager.crearAbonado(abonado);
                        int idAbonado=abonadoManager.getUltimoId();
                        /*CREAR LINEA*/
                        dlinea.crearLinea(numero, 1, idAbonado);
                        /*AGREGAR EL ID A LA LISTA*/
                        int idLineaCreado=dlinea.getUltimoId();
                        listaLineas[indiceLineas++]=idLineaCreado;
                    }
                    else{
                        listaLineas[indiceLineas++]=idLinea;
                    }
                }
            } catch (BiffException e) {
                e.printStackTrace();
            }
            DCampana dcampana=new DCampana();
            int idcampana=0;
            //SI ES REGISTRAR
            if (idCampana == null || idCampana.equals("")) {

                BCampana campana = new BCampana(0, nombre, fecha1, fecha2, bempleado, bmensaje, "Alta", "Descripcion", bestado);
                dcampana.crearCampana(campana);

                idcampana = dcampana.getUltimoId();

            } //SI ES MODIFICAR
            else {
                idcampana=Integer.valueOf(idCampana).intValue();
                BCampana bcampana = new BCampana(idcampana, nombre, fecha1, fecha2, bempleado, bmensaje, "Alta", "Descripcion", bestado);
                dcampana.actualizarCampana(bcampana);
            }
            /*HAY QUE REGISTRAR TODAS LAS LINEAS POR CAMPANA*/
            String fechaprueba = "2010-01-02";
            String estado = "Activo";
            for (int i = 0; i < indiceLineas; i++) {
                    if (!dlinea.existeLineaxCampana(Integer.valueOf(listaLineas[i]).intValue(), idcampana)){
                       dcampana.asociarLineaCampana(idcampana, Integer.valueOf(listaLineas[i]).intValue(), estado, fechaprueba);
                    }
            }

            //List campanas = dcampana.getmodcampanas();
            //request.setAttribute("campanas", campanas);
            //jspPage = "/campana.jsp";
            
            jspPage="/rptaSuccess.jsp";
        }
        
        /*ESPACIO PRUEBA RENZO */ /*FUNCIONA BIEN (PARA UNA, MODIFICAR PARA VARIAS)*/
        else if ("registrollamadas".equals(action)) {
            String id = request.getParameter("listacampana");
            DCampana manager = new DCampana();
            List estadollamadas = manager.obtenerestadollamada(id);
            request.setAttribute("estadollamadas", estadollamadas);
            request.setAttribute("idCampana",id);
            jspPage = "/estado_llamadas.jsp";
        } /*FUNCIONA BIEN*/
        else if ("estadocampanas".equals(action)) {
            String id = request.getParameter("listacampana");
            DCampana manager = new DCampana();
            List estadocampanas = manager.obtenerestadocampana(id);
            request.setAttribute("estadocampanas", estadocampanas);
            request.setAttribute("idCampana",id);
            jspPage = "/estado_campana.jsp";

        }
        else if ("listaEstadoLlamadas".equals(action)) {
            String[] ATRIBUTOS_JSON_EXCLUIDOS = new String[]{
            "~unique-id~", "class"
            };
            int start=Integer.valueOf(request.getParameter("start")).intValue();
            int limit=Integer.valueOf(request.getParameter("limit")).intValue();
 
            String id = request.getParameter("listacampana");
            DCampana manager = new DCampana();
            List<BEestadollamada> estadollamadas = manager.obtenerestadollamada(id);
            String listaJSON = null;
            if (estadollamadas == null) {
                estadollamadas = new ArrayList<BEestadollamada>(0);
            }
            int end=start+limit;
            if (end>=estadollamadas.size()){
                end=estadollamadas.size();
            }
            if (start>=estadollamadas.size()){
                start=estadollamadas.size();
                end=start;
            }

            listaJSON = new String(new JsonSerializer().serialize(estadollamadas.subList(start,end), ATRIBUTOS_JSON_EXCLUIDOS).toString());
            request.setAttribute("listaJSON", listaJSON);
            request.setAttribute("totalCount", estadollamadas.size());
            jspPage = "/rptaJson.jsp";

        }
        else if ("listaEstadoCampanas".equals(action)) {
            String[] ATRIBUTOS_JSON_EXCLUIDOS = new String[]{
            "~unique-id~", "class"
            };
            int start=Integer.valueOf(request.getParameter("start")).intValue();
            int limit=Integer.valueOf(request.getParameter("limit")).intValue();

            String id = request.getParameter("listacampana");
            DCampana manager = new DCampana();
            List estadocampanas = manager.obtenerestadocampana(id);
            List<BCampana> estadoCampanas = manager.obtenerestadocampana(id);
            String listaJSON = null;
            if (estadoCampanas == null) {
                estadoCampanas = new ArrayList<BCampana>(0);
            }
            int end=start+limit;
            if (end>=estadoCampanas.size()){
                end=estadoCampanas.size();
            }
            if (start>=estadoCampanas.size()){
                start=estadoCampanas.size();
                end=start;
            }

            listaJSON = new String(new JsonSerializer().serialize(estadoCampanas.subList(start,end), ATRIBUTOS_JSON_EXCLUIDOS).toString());
            request.setAttribute("listaJSON", listaJSON);
            request.setAttribute("totalCount", estadoCampanas.size());
            jspPage = "/rptaJson.jsp";

        }/* else if ("campanasvigentes".equals(action)) {
            DCampana manager = new DCampana();
            List estadocampanas = manager.obtenerestadocampana();
            request.setAttribute("estadocampanas", estadocampanas);

            jspPage = "/estado_campana.jsp";
        } else if ("campanasfinalizadas".equals(action)) {
            DCampana manager = new DCampana();
            List estadocampanas = manager.obtenerestadocampana();
            request.setAttribute("estadocampanas", estadocampanas);

            jspPage = "/estado_campana.jsp";

        }*/ else if ("volverusuario".equals(action)) {

            HttpSession sesionOk = request.getSession();
            sesionOk.invalidate();
            jspPage = "/index.jsp";

        }

        /*ESPACIO PRUEBA RENZO */



        dispatch(jspPage, request, response);
    }

    protected void dispatch(String jsp, HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        if (jsp != null) {
            RequestDispatcher rd = request.getRequestDispatcher(jsp);
            rd.forward(request, response);
        }
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
